package br.gov.sedurb.ws.client;

import br.gov.se.seplag.RequestFixo;
import br.gov.se.seplag.senhaatendimento.ErroInfoMessage;
import br.gov.se.seplag.senhaatendimento.ParametroEmitirSenhaAtendimento;
import br.gov.se.seplag.senhaatendimento.ResultadoEmitirSenhaAtendimento;
import br.gov.se.seplag.senhaatendimento.SenhaAtendimento;
import br.gov.se.seplag.senhaatendimento.SenhaAtendimento_Service;

import br.gov.sedurb.util.JSFUtils;

import javax.xml.ws.WebServiceRef;
// !THE CHANGES MADE TO THIS FILE WILL BE DESTROYED IF REGENERATED!
// This source file is generated by Oracle tools
// Contents may be subject to change
// For reporting problems, use the following
// Version = Oracle WebServices (11.1.1.0.0, build 130224.1947.04102)

public class SenhaAtendimentoSOAPClient extends WSClient<SenhaAtendimento> {
    @WebServiceRef
    private SenhaAtendimento_Service senhaAtendimento_Service;
    private static SenhaAtendimentoSOAPClient obj;

    private SenhaAtendimentoSOAPClient() {
        super();
    }

    public static SenhaAtendimentoSOAPClient getInstance() {
        if (obj == null) {
            obj = new SenhaAtendimentoSOAPClient();
        }

        return obj;
    }

    public br.gov.se.seplag.ebo.v1.SenhaAtendimento emitirSenhaAtendimento(Boolean atendimentoPreferencial,
                                                                           String codigoProtocoloServico,
                                                                           String observacao) {

        ParametroEmitirSenhaAtendimento parameters =
            new ParametroEmitirSenhaAtendimento();
        parameters.setAtendimentoPreferencial(atendimentoPreferencial);
        parameters.setCdProtocoloServico(codigoProtocoloServico);
        parameters.setMensagemObservacao(observacao);


        ResultadoEmitirSenhaAtendimento resultado =
            new ResultadoEmitirSenhaAtendimento();

        try {
            resultado =
                    getPort().emitirSenhaAtendimento(parameters, RequestFixo.cabecalho());

        } catch (ErroInfoMessage e) {
            JSFUtils.addFacesErrorMessage("Erro ao tentar utilizar o serviço " + this.getClass().getSimpleName() + ":" + e.getMessage());
        } catch (Exception e) {
            JSFUtils.addFacesErrorMessage(erroGenerico(e));
        }
        return resultado.getSenha();
    }

    public SenhaAtendimento criarPortType() {

        senhaAtendimento_Service = new SenhaAtendimento_Service();
        SenhaAtendimento port =
            senhaAtendimento_Service.getSenhaAtendimentoSOAP();

        return port;
    }
}
